To be able to edit code and run cells, you need to run the notebook yourself. Where would you like to run the notebook?

In the cloud (experimental)

Binder is a free, open source service that runs scientific notebooks in the cloud! It will take a while, usually 2-7 minutes to get a session.

On your computer

(Recommended if you want to store your changes.)

  1. Copy the notebook URL:
  2. Run Pluto

    (Also see: How to install Julia and Pluto)

  3. Paste URL in the Open box

Frontmatter

If you are publishing this notebook on the web, you can set the parameters below to provide HTML metadata. This is useful for search engines and social media.

Author 1
getfirst (generic function with 1 method)
👀 Reading hidden code
function getfirst(f::Function, xs)
for x in xs
if f(x)
return x
end
end
error("Not found")
end
798 μs
👀 Reading hidden code
import Pkg
185 μs
👀 Reading hidden code
try
global result = update_nbpkg(ctx, packages_i_want)
catch e
global result_err = e
end
885 ms
👀 Reading hidden code
packages_i_want = ["SpecialFunctions"]# , "DataArrays"]
13.7 μs
Error message

SystemError: opening file "/tmp/jl_uMq3cv/Project.toml": No such file or directory

Stack trace

Here is what happened, the most recent locations are first:

  1. systemerror(p::String, errno::Int32; extrainfo::Nothing)
  2. #systemerror#68
  3. systemerror
  4. open(fname::String; lock::Bool, read::Nothing, write::Nothing, create::Nothing, truncate::Nothing, append::Nothing)
  5. open
  6. open(f::Base.var"#364#365"{String}, args::String; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    from io.jl:328
  7. open
    from io.jl:328
  8. read(filename::String, #unused#::Type{String})
    from io.jl:436
  9. 		Text(read(ctx.env.project_file, String))end
let
try result catch end
Text(read(ctx.env.project_file, String))
end
👀 Reading hidden code
---
Error message

UndefVarError: result not defined

Stack trace

Here is what happened, the most recent locations are first:

  1. let	result	sort([e.name => e.version for e in values(ctx.env.manifest)]; by=first)
let
result
sort([e.name => e.version for e in values(ctx.env.manifest)]; by=first)
end
👀 Reading hidden code
---
Error message

SystemError: opening file "/tmp/jl_uMq3cv/Manifest.toml": No such file or directory

Stack trace

Here is what happened, the most recent locations are first:

  1. systemerror(p::String, errno::Int32; extrainfo::Nothing)
  2. #systemerror#68
  3. systemerror
  4. open(fname::String; lock::Bool, read::Nothing, write::Nothing, create::Nothing, truncate::Nothing, append::Nothing)
  5. open
  6. open(f::Base.var"#364#365"{String}, args::String; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    from io.jl:328
  7. open
    from io.jl:328
  8. read(filename::String, #unused#::Type{String})
    from io.jl:436
  9. 		Text(read(ctx.env.manifest_file, String))end
Keep calm, you got this!
let
try result catch end
Text(read(ctx.env.manifest_file, String))
end
👀 Reading hidden code
---
true
Pkg.PRESERVE_ALL < Pkg.PRESERVE_NONE
👀 Reading hidden code
2.9 ms
PRESERVE_DIRECT::PreserveLevel = 1
Pkg.PreserveLevel(Int64(Pkg.PRESERVE_ALL) + 1)
👀 Reading hidden code
6.8 ms
tiers = [
Pkg.PRESERVE_ALL,
Pkg.PRESERVE_DIRECT,
Pkg.PRESERVE_SEMVER,
Pkg.PRESERVE_NONE,
]
👀 Reading hidden code
8.5 ms
i = iterate(tiers, 4)
👀 Reading hidden code
14.5 μs

👀 Reading hidden code
72.5 μs
update_nbpkg (generic function with 1 method)
function update_nbpkg(ctx, new_packages)
if ctx !== nothing
new_packages = String.(new_packages)
removed = setdiff(keys(ctx.env.project.deps), new_packages)
added = setdiff(new_packages, keys(ctx.env.project.deps))
to_remove = filter(removed) do p
haskey(ctx.env.project.deps, p)
end
if !isempty(to_remove)
Pkg.rm(ctx, [
Pkg.PackageSpec(name=p)
for p in to_remove
])
end
local used_tier = Pkg.PRESERVE_ALL
to_add = added
if !isempty(to_add)
for tier in [
Pkg.PRESERVE_ALL,
Pkg.PRESERVE_DIRECT,
Pkg.PRESERVE_SEMVER,
Pkg.PRESERVE_NONE,
]
used_tier = tier
try
Pkg.add(ctx, [
Pkg.PackageSpec(name=p)
for p in to_add
]; preserve=used_tier)
break
catch e
if used_tier == Pkg.PRESERVE_NONE
# give up
rethrow(e)
end
end
end
# for p in to_add
# entry = first(e -> e.name == p, values(ctx.env.manifest))
# if entry.version !== nothing
# ctx.env.project.compat[p] = "^" * string(entry.version)
# end
# end
# Pkg.Types.write_env(ctx.env)
end
end
(used_tier=used_tier,
# changed_versions=Dict{String,Pair}(),
restart_recommended=(!isempty(to_remove) || used_tier != Pkg.PRESERVE_ALL),
restart_required=(used_tier ∈ [Pkg.PRESERVE_SEMVER, Pkg.PRESERVE_NONE]),)
end
👀 Reading hidden code
4.7 ms
Error message

Not found

Stack trace

Here is what happened, the most recent locations are first:

  1. error(s::String)
  2. getfirst(f::Main.workspace#2.var"#7#8"{String}, xs::Base.ValueIterator{Dict{Base.UUID, Pkg.Types.PackageEntry}})
    		end	end	error("Not found")end
  3. Show more...
Maybe time for a break? ☕️
entry = get_manifest_entry(ctx, first(packages_i_want))
👀 Reading hidden code
---
get_manifest_entry (generic function with 1 method)
get_manifest_entry(ctx::Pkg.Types.Context, pkg_name::String) =
getfirst(e -> e.name == pkg_name, values(ctx.env.manifest))
👀 Reading hidden code
973 μs
let
try result catch end
ctx.env
end
👀 Reading hidden code
270 μs
ctx = Pkg.Types.Context(env=Pkg.Types.EnvCache(joinpath(mktempdir(),"Project.toml")))
👀 Reading hidden code
20.5 ms
"/tmp/jl_uMq3cv"
ctx.env.project_file |> dirname
👀 Reading hidden code
2.2 ms
"/tmp/jl_nvjQo8"
pt = tempname()
👀 Reading hidden code
53.1 μs

Versions

👀 Reading hidden code
174 μs
installed = keys(ctx.env.project.deps)
👀 Reading hidden code
21.4 μs

👀 Reading hidden code
69.2 μs
get_installed_version (generic function with 1 method)
function get_installed_version(ctx, pkg_name)
if pkg_name ∈ stdlibs
"stdlib"
else
entry = get_manifest_entry(ctx, pkg_name)
entry.version
end
end
👀 Reading hidden code
561 μs
Dict(x => get_installed_version(ctx, x) for x in installed)
👀 Reading hidden code
60.5 ms
Error message

Not found

Stack trace

Here is what happened, the most recent locations are first:

  1. error(s::String)
  2. getfirst(f::Main.workspace#2.var"#7#8"{String}, xs::Base.ValueIterator{Dict{Base.UUID, Pkg.Types.PackageEntry}})
    		end	end	error("Not found")end
  3. Show more...
Silly computer!
get_installed_version(ctx, "SpecialFunctions")
👀 Reading hidden code
---

Stdlibs

👀 Reading hidden code
165 μs
👀 Reading hidden code
4.6 ms

👀 Reading hidden code
73.3 μs